'****************************************************************************'
'                                                                            '
' Copyright (C) 2010 Muhammad alaa                                           '
'                                                                            '
' This program is free software; you can redistribute it and/or modify       '
' it under the terms of the GNU General Public License as published by       '
' the Free Software Foundation; either version 2 of the License, or          '
' (at your option) any later version.                                        '
'                                                                            '
' This program is distributed in the hope that it will be useful,            '
' but WITHOUT ANY WARRANTY; without even the implied warranty of             '
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              '
' GNU General Public License for more details.                               '
'                                                                            '
' You should have received a copy of the GNU General Public License along    '
' with this program; if not, write to the Free Software Foundation, Inc.,    '
' 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.                '
'                                                                            '
'****************************************************************************'

Namespace ComPlus
    <ComImport()> _
    <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
    <Guid(IID.ComPlus.IGetAppTrackerData)> _
    Public Interface IGetAppTrackerData
        <PreserveSig()> Function GetApplicationProcesses(ByRef PartitionId As Guid, ByRef ApplicationId As Guid, ByVal Flags As Integer, <Out()> ByRef NumApplicationProcesses As UInteger, <Out()> ByRef ApplicationProcesses As ApplicationProcessSummary) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetApplicationProcessDetails(ByRef ApplicationInstanceId As Guid, ByVal ProcessId As UInteger, ByVal Flags As UInteger, <Out()> ByRef Summary As ApplicationProcessSummary, <Out()> ByRef Statistics As ApplicationProcessStatistics, <Out()> ByRef RecycleInfo As ApplicationProcessRecycleInfo, <Out(), MarshalAs(UnmanagedType.Bool)> ByRef AnyComponentsHangMonitored As Boolean) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetApplicationsInProcess(ByRef ApplicationInstanceId As Guid, ByVal ProcessId As UInteger, ByRef PartitionId As Guid, ByVal Flags As UInteger, <Out()> ByRef NumApplicationsInProcess As UInteger, <Out()> ByRef Applications As ApplicationSummary) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetComponentsInProcess(ByRef ApplicationInstanceId As Guid, ByVal ProcessId As UInteger, ByRef PartitionId As Guid, ByRef ApplicationId As Guid, ByVal Flags As UInteger, <Out()> ByRef NumComponentsInProcess As UInteger, <Out()> ByRef Components As ComponentSummary) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetComponentDetails(ByRef ApplicationInstanceId As Guid, ByVal ProcessId As UInteger, ByRef Clsid As Guid, ByVal Flags As UInteger, <Out()> ByRef Components As ComponentSummary, <Out()> ByRef Statistics As ComponentStatistics, <Out()> ByRef HangMonitorInfo As ComponentHangMonitorInfo) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetTrackerDataAsCollectionObject(<Out(), MarshalAs(UnmanagedType.IUnknown)> ByRef TopLevelCollection As Object) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetSuggestedPollingInterval(<Out()> ByRef PollingIntervalInSeconds As UInteger) As <MarshalAs(UnmanagedType.Error)> Integer
    End Interface
End Namespace